import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;


/**
 * Menu qui s'ouvre par la touche echap ou par la barre de jeu.
 *
 */
public class MenuJeu extends JFrame implements ActionListener,KeyListener{

	
    private int hauteurMenuJeu=500;
    private int largeurMenuJeu=500;
	private Dimension dimensionMenuJeu = new Dimension(largeurMenuJeu, hauteurMenuJeu);
    private JLayeredPane ensemble = new JLayeredPane();
    private Environnement environnement;
    private BarreDeJeu barreDeJeu;

    
    private BackgroundPanel fond;   
    private JPanel panelQuitter = new JPanel();
    private JPanel panelRetourJeu = new JPanel();
    private JPanel panelRetourMenu = new JPanel();
    private JPanel panelSauvegarder = new JPanel();
    
	private JButton boutonQuitter = new JButton(new ImageIcon("img/boutonQuitterLeJeu.png"));
	private JButton boutonRetourJeu = new JButton(new ImageIcon("img/boutonReprendrePartie.png"));
	private JButton boutonRetourMenu = new JButton(new ImageIcon("img/boutonRetourMenuPrincipal.png"));
	private JButton boutonSauvegarder = new JButton(new ImageIcon("img/boutonSauvegarderPartie.png"));

/**
 	* 	
 	* @param _env
 	* 				environnement associe au menu jeu
 	* @param _barreDeJeu
 	* 				barre de jeu a partir de laquelle de on peut ouvrir le menu de jeu
 	*/
    public MenuJeu(Environnement _env, BarreDeJeu _barreDeJeu) {
    	super();
    	this.environnement=_env;
    	this.barreDeJeu=_barreDeJeu;
    	this.ajoutDesBoutons();
    	this.initialisationMenuJeu();
    }

/**
 	* Initialisaiton du menu de jeu     
 	*/
    public void initialisationMenuJeu() {

		this.setUndecorated(true);
		this.getContentPane().add(ensemble);
		this.setResizable(false);
    	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.pack();
		this.setLocationRelativeTo(null);
		addKeyListener(this);
		
	}

 /**
  	* Ajout des differents boutons du menu de jeu    
  	*/
	public void ajoutDesBoutons() {
		fond = new BackgroundPanel("img/MenuJeu.png");
		fond.setBounds(0, 0, largeurMenuJeu, hauteurMenuJeu);
		ensemble.setPreferredSize(dimensionMenuJeu);
		ensemble.add(fond, new Integer(2));
	
        boutonQuitter.setBorderPainted(false);
        boutonQuitter.setOpaque(false);
        boutonQuitter.setContentAreaFilled(false);
        boutonQuitter.addActionListener(this);
        panelQuitter.setBounds(167,320,165,80);
        panelQuitter.setOpaque(false);
        panelQuitter.add(boutonQuitter);
        ensemble.add(panelQuitter, new Integer(3));
		
		boutonRetourJeu.setBorderPainted(false);
		boutonRetourJeu.setOpaque(false);
		boutonRetourJeu.setContentAreaFilled(false);
		boutonRetourJeu.addActionListener(this);
		panelRetourJeu.setBounds(167,250,165,80);
		panelRetourJeu.setOpaque(false);
		panelRetourJeu.add(boutonRetourJeu);
		ensemble.add(panelRetourJeu, new Integer(3));
		
		boutonRetourMenu.setBorderPainted(false);
		boutonRetourMenu.setOpaque(false);
		boutonRetourMenu.setContentAreaFilled(false);
		boutonRetourMenu.addActionListener(this);
		panelRetourMenu.setBounds(167,175,165,80);
		panelRetourMenu.setOpaque(false);
		panelRetourMenu.add(boutonRetourMenu);
		ensemble.add(panelRetourMenu, new Integer(3));
		
		boutonSauvegarder.setBorderPainted(false);
		boutonSauvegarder.setOpaque(false);
		boutonSauvegarder.setContentAreaFilled(false);
		boutonSauvegarder.addActionListener(this);
		panelSauvegarder.setBounds(167,100,165,80);
		panelSauvegarder.setOpaque(false);
		panelSauvegarder.add(boutonSauvegarder);
		ensemble.add(panelSauvegarder, new Integer(3));
		
		
	}

/**
 	* Permet de quitter le jeu 	
 	*/
	public void quitterJeu() {
    	System.exit(0);
    }
 
/**
 	* Permet de continuer la partie	
 	*/
    public void retourJeu() {
    	this.setVisible(false);
    }

/**
 	* Permet de retourner au menu principal    
 	*/
    public void retourMenu() {
    	this.setVisible(false);
    	barreDeJeu.setVisible(false);
    	environnement.setVisible(false);    
    	Menu menu = new Menu("Le Refuge des Escargots",1024,768,false) ;		
    }



/**
 	* Gestion du clabier    
 	*/
	@Override
	public void keyPressed(KeyEvent e) {
		int keyCode = e.getKeyCode();
		if (keyCode == KeyEvent.VK_ESCAPE) {
			this.setVisible(false);
		}
	}

	@Override
	public void keyReleased(KeyEvent arg0) {	
	}


	@Override
	public void keyTyped(KeyEvent arg0) {		
	}

/**
 	* Gestion de la souris	
 	*/
	@Override
	public void actionPerformed(ActionEvent arg) {
		if (arg.getSource()==boutonQuitter){
			// QUITTER LE JEU
			this.quitterJeu();
	  	}
		
		if (arg.getSource()==boutonRetourJeu){
			// RETOUR AU JEU
	          this.retourJeu();
	  	}
		
		if (arg.getSource()==boutonRetourMenu){
			// RETOUR AU MENU PRINCIPAL
			this.retourMenu();       
	  	}
	}

}
